package Greedy.leetcode;

import java.util.concurrent.atomic.DoubleAccumulator;

/**
 * 1. 问题描述
 *      给定字符串 s 和 t ，判断 s 是否为 t 的子序列。
 *      你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长（长度 ~= 500,000），而 s 是个短字符串（长度 <=100）。
 *      字符串的一个子序列是原始字符串删除一些（也可以不删除）字符而不改变剩余字符相对位置形成的新字符串。
 *      (例如，"ace"是"abcde"的一个子序列，而"aec"不是）。
 *
 * 2，算法分析
 *
 *
 *
 * 3. 思考(***)
 *      如果当前有k个字符串s，我们想看看这k个字符串是否为t的子串，如果当k大于10亿的时候，该如何实现?
 */
@SuppressWarnings("all")
public class 判断子序列 {
    public static void main(String[] args) {

    }

    /**
     *  分析：
     *      设置一个指针k指向s
     *      从前到后遍历t字符串如果当前t中的字符与当前k指向的字符相同，让k后移
     *      最后判断当前k是否为s的长度，如果是说明为字串
     * @param s
     * @param t
     * @return
     */
    public static boolean isSubsquence(String s, String t) {
        int k = 0;
        for(int i = 0; i < t.length() && k < s.length(); i++) {
            if(s.charAt(k) == t.charAt(i)) {k++;}
        }
        return k == s.length() ? true : false;
    }
}
